#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main()
//{
//	int a[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 }, * p[4], i;
//	for (i = 0; i < 4; i++)
//		p[i] = &a[i * 3];
//	printf("%d\n",p[3][2]);
//	return 0;
//}

//int main()
//{
//
//	//char a, b;
//	//a = 'a';
//	//printf("%c", ++a);
//	//printf("  %c", b = a++);
//	int x;
//	int a;
//	a = (x = 2 * 5, x * 5), x + 5;
//	printf("%d", a);
//	printf("%d", x);
//	return 0;
//}

//int main() {
//
//    int right, left;
//    scanf("%d%d", &right, &left);
//    int count = 0;
//    int* arr = (int*)malloc((right - left+2) * sizeof(int));
//    for (int i = left; i <= right; i++)
//    {
//
//        if (pd(i)==1)
//        {
//            arr[count] = i;
//            count++;
//        }
//
//    }
//
//    for (int i = 0; i < count; i++)
//        printf(" %d ", arr[i]);
//    return arr;
//
//}
//
//int pd(int s)
//{
//    int a;
//    while (s)
//    {
//        a = s % 10;
//        if (a!=0||s % a != 0)
//        {
//            return 0;
//        }
//        s /= 10;
//
//    }
//    return 1;
//}
int* productExceptSelf(int* nums, int numsSize, int* returnSize) {
    int i = 0, product = 1;
    int* res = malloc(numsSize * sizeof(int));

    for (i = 0; i < numsSize; i++) {
        res[i] = product;
        product = product * nums[i];
    }

    product = 1;
    for (i = numsSize - 1; i >= 0; i--) {
        res[i] = res[i] * product;
        product = nums[i] * product;
    }

    *returnSize = numsSize;
    return res;
}


int* productExceptSelf(int* nums, int numsSize, int* returnSize) {
    int* arr = malloc(numsSize * sizeof(int));
    int k = 1;
    for (int i = 0; i < numsSize; i++)
    {
        arr[i] = k;
        k *= nums[i];
    }
    k = 1;
    for (int i = numsSize; i >= 0; i--)
    {
        arr[i] *= k;
        k *= nums[i];
    }
    *returnSize = numsSize;
    return arr;

}